/*
 * 代号：凤凰
 * http://www.jphenix.org
 * 2022年8月29日
 * V4.0
 */
package com.jphenix.standard.servlet.api;

import java.io.IOException;
import java.io.InputStream;

import com.jphenix.standard.beans.IKernel;
import com.jphenix.standard.docs.ClassInfo;

/**
 * Servlet输入流
 * 
 * 2022-09-04 隔离了ServletApi，兼容新老Tomcat
 * 
 * @author MBG
 * 2022年8月29日
 */
@ClassInfo({"2022-09-04 21:58","Servlet输入流"})
public class ServletInputStream extends InputStream implements IKernel {

	private InputStream kernel = null; // 核心类实例
	
	/**
	 * 构造函数
	 * @author MBG
	 */
	public ServletInputStream(InputStream inputStream) {
		super();
		this.kernel = inputStream;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public Object getKernel() {
		return kernel;
	}

	/**
	 * 覆盖方法
	 */
	@Override
	public int read() throws IOException {
		return kernel.read();
	}

	/**
	 * 读取一行信息并放入缓存中
	 * @param b    缓存
	 * @param off  起始位置
	 * @param len  长度
	 * @return
	 * @throws IOException
	 * 2022年8月29日
	 * @author MBG
	 */
    public int readLine(byte[] b, int off, int len) throws IOException {
        if (len <= 0) {
            return 0;
        }
        int count = 0, c;
        while ((c = read()) != -1) {
            b[off++] = (byte) c;
            count++;
            if (c == '\n' || count == len) {
                break;
            }
        }
        return count > 0 ? count : -1;
    }
}
